前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏

完整面试题地址:
作者:程序员poetry
扫码关注作者公众号:「前端进阶之旅」 每天分享技术干货
前端进阶之旅公众号二维码

本节我们讲一下中间件,什么是中间件?大家如果接触过 express、koa 这类 node.js 框架,应该都会知道它们其实就是请求拦截器,当一个请求过来时,通过中间件可以增加自己的处理逻辑,相当于流水线上加一道“工序”。在 Nuxt 中也存在这种中间件机制,只不过被细分为两种:

  • Route middleware:路由中间件;
  • Server middleware:服务器中间件。

# 路由中间件

路由中间件并不是一定运行在客户端的中间件,而是运行在 Nuxt 应用中 Vue 渲染部分,路由中间件会在进入路由之前被调用,如果是 SSR,这个执行时刻既可能在服务端(首屏),也可能在客户端。

# 中间件类型

路由中间件根据影响范围和使用方式的不同,又分为三种:

  • 匿名中间件:只影响一个页面,不可复用;
  • 具名中间件:指定若干影响页面,可复用、组合;
  • 全局中间件:影响所有页面,文件名需要加后缀 global。

# 中间件使用

匿名中间件用法,mid.vue:

javascript
复制代码definePageMeta({
  middleware(to, from) {
    console.log('匿名中间件,具体页面执行');
  }
})
@前端进阶之旅: 代码已经复制到剪贴板

具名中间件用法,mid.vue:

css
复制代码definePageMeta({
  middleware: ['amid', 'bmid']
})
@前端进阶之旅: 代码已经复制到剪贴板

定义具名中间件,amid.ts:

javascript
复制代码export default defineNuxtRouteMiddleware((to, from) => {
  console.log('具名中间件a,影响指定页面:' + to.path);
})
@前端进阶之旅: 代码已经复制到剪贴板

全局中间件,创建 cmid.global.ts:

javascript
复制代码export default defineNuxtRouteMiddleware((to, from) => {
  console.log('全局中间件c,影响所有页面');
})
@前端进阶之旅: 代码已经复制到剪贴板

效果如下:

img

fe

基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏